/**
 * @summary 获取市场代码
 * @param {Object} code
 * @returns {string} sh|bj|sz
 */
export function getMarketCode(code) {
  let str = 'sh';
  if (code.indexOf('.') != -1) {
    str = code.split('.')[1];
  } else if (code.length > 2) {
    str = code.substring(0, 2);
  }
  return str.toLowerCase();
}

export const getMarketName = (value) => {
  switch (value) {
    case 'sh':
      return '沪';
    case 'sz':
      return '深';
    case 'bj':
      return '京';
    default:
      return value;
  }
};

/**
 * @summary 获取带点的标准股票代码
 * @param {Object} code
 * @returns {string}
 * @example return 002665.sz
 */
export function getDotCode(code) {
  let str = '';
  if (code.indexOf('.') != -1) {
    str = code;
  } else {
    str = code.substring(2) + '.' + code.substring(0, 2);
  }
  return str;
}

/**
 * @summary 获取不带点的标准股票代码
 * @param {Object} code
 * @returns {string}
 * @example return sz002665
 */
export function getAllCode(code) {
  let str = '';
  if (code.indexOf('.') != -1) {
    let arr = code.split('.');
    str = arr[1] + arr[0];
  } else {
    str = code;
  }
  return str;
}

/**
 * @summary 获取精简股票代码
 * @param {Object} code
 * @returns {string}
 * @example return sz002665
 */
export function getShortCode(code) {
  let str = '';
  if (code.indexOf('.') != -1) {
    let arr = code.split('.');
    str = arr[0];
  } else {
    str = code.substring(2);
  }
  return str;
}

/**
 * @summary 是否在交易时间内
 * @returns {boolean}
 */
export async function isExchangTime() {
  return true; //去掉前端判断
  let now = new Date();
  let d = `${now.getFullYear()}-${(now.getMonth() + 1)
    .toString()
    .padStart(2, '0')}-${now.getDate().toString().padStart(2, '0')}`;
  let [error, resp] = await uni.request({
    url: '/jiari/?d=' + d,
  }); //查询第三方接口是否在工作日内
  let isExChangDay = resp.data;
  let statusText = '';
  let statusTime = '';
  console.log(isExChangDay);
  if (isExChangDay == 0) {
    //交易日内
    let hour = now.getHours(); //时
    let minutes = now.getMinutes(); //分
    if (hour >= 0 && hour < 10) {
      if (hour >= 9) {
        if (minutes >= 30) {
          // 9:30-10:00
          statusText = '交易中';
          statusTime = '9:30-10:00';
        } else {
          // 9:00-9:30
          statusText = '集合竞价';
          statusTime = '9:00-9:30';
        }
      } else {
        // 0:00-9:00
        statusText = '未开盘';
      }
    } else if (hour > 9 && hour < 12) {
      if (hour >= 10) {
        if (hour >= 11) {
          if (minutes >= 30) {
            // 11:30-12:00
            statusText = '休市中';
            statusTime = '11:30-12:00';
          } else {
            // 11:00-11:30
            statusText = '交易中';
            statusTime = '11:00-11:30';
          }
        } else {
          // 10:00-11:00
          statusText = '交易中';
          statusTime = '10:00-11:00';
        }
      } else {
        if (minutes >= 30) {
          // 9:30-10:00
          statusTime = '9:30-10:00';
          statusText = '交易中';
        } else {
          // 9:00-9:30
          statusText = '集合竞价';
          statusTime = '9:00-9:30';
        }
      }
    } else if (hour >= 11 && hour < 13) {
      if (hour < 12) {
        if (minutes >= 30) {
          // 11:30-12:00
          statusText = '休市中';
          statusTime = '11:30-12:00';
        } else {
          // 11:00-11:30
          statusText = '交易中';
          statusTime = '11:00-11:30';
        }
      } else {
        statusText = '休市中';
      }
    } else if (hour > 12 && hour < 15) {
      if (hour >= 13) {
        // 13:00-15:00
        statusTime = '13:00-15:00';
        statusText = '交易中';
      } else {
        // 12:00-13:00
        statusTime = '12:00-13:00';
        statusText = '休市中';
      }
    } else if (hour >= 15 && hour <= 24) {
      // 15:00-24:00
      statusText = '已收盘';
    }
  }
  console.log(statusText);
  return statusText == '交易中' ? true : false;
}

export const formatNumberUnit = (num) => {
  if (num < 1e4) return num; // 小于1万直接返回原数字
  if (num >= 1e4 && num < 1e8) return +(num / 1e4).toFixed(2) + '万'; // 大于等于1万小于1亿的数字转换成万
  if (num >= 1e8 && num < 1e12) return +(num / 1e8).toFixed(2) + '亿'; // 大于等于1亿小于1万亿的数字转换成亿
  if (num >= 1e12) return +(num / 1e12).toFixed(2) + '万亿'; // 大于等于1万亿的数字转换成万亿
};

/**
 * @summary 高精度乘法
 * @param {Object} arg1
 * @param {Object} arg2
 */
export const accMul = function (arg1, arg2) {
  var m = 0,
    s1 = arg1.toString(),
    s2 = arg2.toString();
  try {
    m += s1.split('.')[1].length;
  } catch (e) {}
  try {
    m += s2.split('.')[1].length;
  } catch (e) {}
  return (
    (Number(s1.replace('.', '')) * Number(s2.replace('.', ''))) /
    Math.pow(10, m)
  );
};

/**
 * @summary 高精度加法
 * @param {Object} arg1
 * @param {Object} arg2
 */
export const accAdd = function (arg1, arg2) {
  var r1, r2, max;
  try {
    r1 = arg1.toString().split('.')[1].length;
  } catch (e) {
    r1 = 0;
  }
  try {
    r2 = arg2.toString().split('.')[1].length;
  } catch (e) {
    r2 = 0;
  }
  max = Math.pow(10, Math.max(r1, r2));
  return (arg1 * max + arg2 * max) / max;
};

/**
 * @summary 批量相乘
 */
export const manyAccMul = function () {
  let arg = arguments;
  let parameters;
  //如果第一个是数组
  if (arg[0] instanceof Array) {
    parameters = arg[0];
  } else {
    parameters = Array.from(arguments);
  }
  let a, b;
  try {
    a = parameters.splice(0, 1)[0]; //弹出一个数字
    b = parameters.splice(0, 1)[0]; //弹出第二个数字
    if (a && b) {
      let result = accMul(a, b); //乘法
      parameters.unshift(result); //结果重新插回头部
      return manyAccMul(parameters);
    } else {
      return parseFloat(a).toFixed(2);
    }
  } catch (e) {
    console.log(e);
  }
};

/**
 * @summary 批量相加
 */
export const manyAccAdd = function () {
  let arg = arguments;
  let parameters;
  //如果第一个是数组
  if (arg[0] instanceof Array) {
    parameters = arg[0];
  } else {
    parameters = Array.from(arguments);
  }
  let a, b;
  try {
    a = parameters.splice(0, 1)[0]; //弹出一个数字
    b = parameters.splice(0, 1)[0]; //弹出第二个数字
    if (a && b) {
      let result = accAdd(a, b); //乘法
      parameters.unshift(result); //结果重新插回头部
      return manyAccAdd(parameters);
    } else {
      return parseFloat(a).toFixed(2);
    }
  } catch (e) {
    console.log(e);
  }
};

/**
 * @summary 批量相加
 */
export const manyAccAdd1 = function () {
  let arg = arguments;
  let parameters;
  //如果第一个是数组
  if (arg[0] instanceof Array) {
    parameters = arg[0];
  } else {
    parameters = Array.from(arguments);
  }
  let a, b;
  try {
    a = parameters.splice(0, 1)[0]; //弹出一个数字
    b = parameters.splice(0, 1)[0]; //弹出第二个数字
    if (a && b) {
      let result = accAdd(a, b); //乘法
      parameters.unshift(result); //结果重新插回头部
      return manyAccAdd(parameters);
    } else {
      return parseFloat(a).toFixed(4);
    }
  } catch (e) {
    console.log(e);
  }
};
